(major-mode-remap(-defaults)): New var and function (bug#69191)
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 4 Mar 2024 04:08:16 +0000 (23:08 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 4 Mar 2024 04:58:18 +0000 (23:58 -0500)
commit2b5d43081a30f816dd38a16c7b5bfbad712a779b
tree8415705736e15e1e4e34382ee715bc87b7c99f81
parentf5c65dae099485f4df128b61d36ae9e5af8518a8
(major-mode-remap(-defaults)): New var and function (bug#69191)

While `major-mode-remap-alist` provides a way for users to indicate the
major mode of their choice, we need a similar variable for the
use of packages.

This patch adds a new `major-mode-remap-defaults` and changes various
packages to obey it or make use of it.
I think it nicely cleans the regexp duplication between CC-mode and
`c-ts-mode.el` and also makes it easier/cleaner for users to override
the changes made by `*-ts-mode.el`.

* lisp/files.el (major-mode-remap-defaults): New variable.
(major-mode-remap): New function.
(set-auto-mode-0): Use it.
* doc/lispref/modes.texi (Auto Major Mode): Document them.

* lisp/textmodes/tex-mode.el (tex--redirect-to-submode):
Use `major-mode-remap`.
(major-mode-remap-defaults): Set it to remap AUCTeX modes by default.
* lisp/progmodes/ruby-ts-mode.el (auto-mode-alist): Leave it alone.
(major-mode-remap-defaults): Set this one instead.
* lisp/progmodes/c-ts-mode.el (c-or-c++-ts-mode): Use `major-mode-remap`.
(auto-mode-alist): Leave it alone.
(major-mode-remap-defaults): Set this one instead.
* lisp/org/ox.el (org-export-to-buffer): Modernize docstring accordingly.
* lisp/progmodes/cc-mode.el (c-or-c++-mode):
* lisp/org/ox-latex.el (org-latex-export-as-latex):
* lisp/org/ox-koma-letter.el (org-koma-letter-export-as-latex):
* lisp/org/ox-beamer.el (org-beamer-export-as-latex):
Use `major-mode-remap` when available.
12 files changed:
doc/lispref/modes.texi
etc/NEWS
lisp/files.el
lisp/org/ox-beamer.el
lisp/org/ox-koma-letter.el
lisp/org/ox-latex.el
lisp/org/ox.el
lisp/progmodes/c-ts-mode.el
lisp/progmodes/cc-mode.el
lisp/progmodes/go-ts-mode.el
lisp/progmodes/ruby-ts-mode.el
lisp/textmodes/tex-mode.el